package org.dromara.business.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.business.domain.ContentComment;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.mybatis.core.vo.BaseVo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.common.web.core.BaseController;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 统一内容评论视图对象 t_content_comment
 *
 * @author Hao Tong Xue
 * @date 2025-04-21
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ContentComment.class)
public class ContentCommentVo extends BaseVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 评论ID
     */
    @ExcelProperty(value = "评论ID")
    private Long id;

    /**
     * 关联的内容ID（视频/音频/文章等）
     */
    @ExcelProperty(value = "关联的内容ID", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "视=频/音频/文章等")
    private Long contentId;

    /**
     * 内容类型：1-视频，2-音频，3-文章
     */
    @ExcelProperty(value = "内容类型：1-视频，2-音频，3-文章", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "content_type")
    private Integer contentType;

    /**
     * 父评论ID（0表示顶级评论）
     */
    @ExcelProperty(value = "父评论ID", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=表示顶级评论")
    private Long parentId;

    /**
     * 回复的目标用户ID
     */
    @ExcelProperty(value = "回复的目标用户ID")
    private Long replyToUserId;

    /**
     * 评论内容
     */
    @ExcelProperty(value = "评论内容")
    private String commentText;

    /**
     * 点赞数
     */
    @ExcelProperty(value = "点赞数")
    private Integer likeCount;

    /**
     * 回复数
     */
    @ExcelProperty(value = "回复数")
    private Long replyCount;

    /**
     * 是否置顶：0-否，1-是
     */
    @ExcelProperty(value = "是否置顶：0-否，1-是", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "yes_no")
    private Integer isTop;

    /**
     * 是否精选：0-否，1-是
     */
    @ExcelProperty(value = "是否精选：0-否，1-是", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "yes_no")
    private Integer isFeatured;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 创建用户的头像
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL)
    private String createAvatar;

    /**
     * 创建用户的关注数量
     */
    private Integer createFollowNum;

    /**
     * 创建用户的粉丝数量
     */
    private Integer createFansNum;

    /**
     * 创建用户的会员等级
     */
    private Integer createUserLevel;

    /**
     * 创建用户的个性签名
     */
    private String createUserSignature;

    /**
     * 回复用户的名称
     */
    private String replyUserName;

    /**
     * 回复用户的头像
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL)
    private String replyUserAvatar;

    /**
     * 回复用户的关注数量
     */
    private Integer replyFollowNum;

    /**
     * 回复用户的粉丝数量
     */
    private Integer replyFansNum;

    /**
     * 回复用户的会员等级
     */
    private Integer replyUserLevel;

    /**
     * 回复用户的个性签名
     */
    private String replyUserSignature;

    /**
     * 点赞状态 0-点赞 1-取消点赞 2-暂无操作
     */
    private Integer isLiked;

    /**
     * 所属顶级父评论ID（0表示本身就是顶级评论）
     */
    private Long rootId;

    /**
     * 是否有子评论
     */
    private Boolean hasChildren;

}
